page.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { Metadata } from "next";
  2. import { Agent } from "@/types/agent";
  3. import AgentClient from "./AgentClient";
  4. import { QueryProvider } from "../../ClientQueryProvider";
  5. import { getAgentFromContract } from "@/lib/agents";
  6. export async function generateMetadata({ params }: { params: { id: string } }): Promise<Metadata> {
  7. const id = params.id
  8. const agentResult = await getAgentFromContract(id);
  9. const agent = (agentResult && !Array.isArray(agentResult)) ? agentResult as Agent : null;
  10. const title = agent?.name ?? "Agent Profile";
  11. const description = agent?.description ?? "Meet our intelligent agent.";
  12. const image = agent?.avatar ?? "/default-agent-image.png";
  13. const url = `${process.env.NEXT_PUBLIC_PRODUCTION_URL}/agent/${params.id}`;
  14. return {
  15. title,
  16. description,
  17. openGraph: {
  18. title,
  19. description,
  20. url,
  21. type: "profile",
  22. images: [
  23. {
  24. url: image,
  25. width: 800,
  26. height: 600,
  27. alt: `${title}'s profile image`,
  28. },
  29. ],
  30. },
  31. twitter: {
  32. card: "summary_large_image",
  33. title,
  34. description,
  35. images: [image],
  36. },
  37. };
  38. }
  39. export default async function AgentPage({ params }: { params: { id: string } }) {
  40. return (
  41. <QueryProvider>
  42. <AgentClient id={params.id} />
  43. </QueryProvider>
  44. );
  45. }